// 临时对象（无名对象）
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

template <typename T>
class print
{
public:
    void operator()(const T &elem)
    {
        cout << elem << endl;
    }
};

int main()
{
    int ia[6] = {0, 1, 2, 3, 4, 5};
    vector<int> vec(ia, ia + 6);

    // print<int>(); 是一个临时对象，不是一个函数调用操作
    // 临时对象被传入for_each()之中起作用，当for_each()结束时，这个临时对象也就结束了它的生命
    for_each(vec.begin(), vec.end(), print<int>());

    return 0;
}
